package com.wkk.quartz.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wkk.quartz.dto.QuartzShowDto;
import com.wkk.quartz.dto.QuartzAddOrUpdateDto;
import com.wkk.quartz.entity.QuartzJob;

import java.util.List;

/**
 * @author : WangKeKe
 * @date : 2020/8/17 17:06
 * Description : 任务接口
 */

public interface QuartzService extends IService<QuartzJob> {

    /**
     * 添加或修改定时任务详情
     *
     * @param quartzAddOrUpdateDto 具体内容
     * @param userId               操作者ID
     * @return 是否成功
     */
    boolean addOrUpdateTask(QuartzAddOrUpdateDto quartzAddOrUpdateDto, String userId);

    /**
     * 获取所有定时任务
     *
     * @return 定时任务集合
     */
    List<QuartzShowDto> queryList();


    /**
     * 执行定时任务 (将job和Trigger加入Scheduler中)
     *
     * @param quartzJob 任务信息
     * @throws Exception 执行异常
     */
    void execute(QuartzJob quartzJob) throws Exception;

    /**
     * 暂停任务 (将job从Scheduler中移除)
     *
     * @param id 任务信息ID
     */
    void pause(String id);

    /**
     * 重启任务
     *
     * @param id 任务ID
     */
    void resumeJob(String id);
}
